详细记录丨Realtek RTL8188FU WiFi 开启热点
Hello 大家好,我是小二,久违了!(PS:其实是最近加班太多了...)
上篇文章,我总结了 WiFi 连接路由的过程
本篇文章想分享一下 WiFi 开启热点的过程,也就是常说的 AP 模式。
1 参考资料
按照惯例,先呈上参考资料,这样可以先打开,再结合文章一块食用,体验更佳!
首先强烈推荐 周立功 网站提供的两个参考教程,详细介绍了 WiFi 模组使用方法。
其他地方也很难找到这么详细的教程
【WiFi-BL使用说明】https://manual.zlg.cn/web/#/30?page_id=1157 【蓝牙使用】https://manual.zlg.cn/web/#/45?page_id=4819
然后是我自己在网上找到的参考资料
【linux编译wifi驱动RTL8188EUS模块 AP模式】https://blog.csdn.net/zh1204190329/article/details/79942137
最后,还有一些其他前辈的教程,十分感谢!
为了方便,本文代码采用两种方式展示,一种图片格式,方便阅读;一种源码格式,方便复制;请君按需取用~
2 环境介绍
1、Ubuntu18.04 ,不加密环境,版本信息如下:
zhaoc@Ubuntu1804:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bionic
zhaoc@Ubuntu1804:~$ uname -a
Linux Ubuntu1804 5.4.0-54-generic #60~18.04.1-Ubuntu SMP Fri Nov 6 17:25:16 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
2、Linux 内核版本:4.4.179 ;
3、交叉编译链版本
arm-none-linux-gnueabi-gcc
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)
3 配置过程
参考周立功的资料,记录开启 AP 的脚本文件,内容如下
#!/bin/sh
killall hostapd udhcpd wpa_supplicant udhcpc 2> /dev/null
#insmod /opt/bcmdhd.ko # bcmdhd.ko驱动模块放在其它目录,则需要对应修改
rmmod 8188fu
insmod ./8188fu.ko
ifconfig wlan0 down
#echo /lib/firmware/bcm/SN8000_BCM43362/fw_bcmdhd_apsta.bin > /sys/module/bcmdhd/parameters/firmware_path
#echo /lib/firmware/bcm/SN8000_BCM43362/bcmdhd.SN8000.SDIO.cal > /sys/module/bcmdhd/parameters/nvram_path
ifconfig wlan0 up
sleep 1
#echo "1" > /proc/sys/net/ipv4/ip_forward
#iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE #eth0是联网网卡名
#iptables -A FORWARD -s 192.168.5.0/24 -j ACCEPT #wlan0的ip
#iptables -A FORWARD -d 192.168.151.0/24 -j ACCEPT #联网网卡的ip
ifconfig wlan0 192.168.5.1
udhcpd ./udhcpd.conf # udhcpd.conf放在其它目录,则需要对应修改
echo "hostapd -B ./hostapd.conf"
hostapd -B ./hostapd.conf # hostapd.conf放在其它目录,则需要对应修改
参考上述脚本示例,就能有一个大概的思路。
结合自身需求,整理命令如下:
# 查看wlan0网卡是否存在
ifconfig -a
# 重启无线网卡
ifconfig wlan0 down
ifconfig wlan0 up
# 配置wlan0网卡IP
ifconfig wlan0 192.168.5.1
# 使能DHCP,自动分配IP服务
udhcpd /etc/udhcpd.conf
# 开启WiFi
hostapd -B /etc/hostapd.conf
udhcpd 命令、hostapd 命令,需要使用对应配置文件启动,整理文件内容如下:
/etc/udhcpd.conf 文件内容如下:
[root]#cat /etc/udhcpd.conf
# the start and end of the IP lease block
start 192.168.5.10
end 192.168.5.254
# the interface that udhcpd will use
interface wlan0
opt dns 114.114.114.114
option subnet 255.255.255.0
opt router 192.168.5.1
option domain local
option lease 864000 # 10days of seconds
/etc/hostapd.conf 文件内容如下:
[root]#cat /etc/hostapd.conf
# WPA2-PSK authentication with AES encryption
interface=wlan0
driver=nl80211
ctrl_interface=/var/run/hostapd
ssid=ZHAOC
channel=6
ieee80211n=1
hw_mode=g
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
其中包含 WiFi 名称、密码等信息
WiFi 名称( ssid ):ZHAOC WiFi 密码( wpa_passphrase ):12345678
在熟悉了基本的命令、配置文件后,就可以编写脚本,自动化执行了,这样可以大大节省调试时间。
开启 WiFi AP 模式,脚本文件如下,并附有详细注释
#/bin/sh
# 先杀死所有相关进程
killall hostapd udhcpd wpa_supplicant udhcpc
# 重启无线网卡
ifconfig wlan0 down
ifconfig wlan0 up
# 延时1秒
sleep 1
# 配置无线网卡固定IP
ifconfig wlan0 192.168.43.1
# 启动服务端,DHCP自动分配IP地址
udhcpd /App/udhcpd.conf
# 开启设备热点
echo "hostapd -B /App/hostapd.conf"
hostapd -B /App/hostapd.conf
基本与单纯的命令行操作差不太多。主要是集合到脚本文件当中,要求格式统一等。
下面看看停止 WiFi AP 模式脚本,其实就是 killall 命令
#/bin/sh
echo "[root] killall hostapd udhcpd"
killall hostapd udhcpd
下面就是自己配置的 App/hostapd.conf ,附有详细注释
# WPA2-PSK authentication with AES encryption
# 使用网卡
interface=wlan0
# 网卡驱动
driver=nl80211
# 未知
ctrl_interface=/var/run/hostapd
# 热点名称
ssid=ZHAOC
# 热点使用信道,频段
channel=11
# 未知
ieee80211n=1
hw_mode=g
ignore_broadcast_ssid=0
# 下面四项,当配置为加密模式时,需开启;
# 即连接 WiFi 热点时,需要输入密码;
#wpa=2
#wpa_passphrase=12345678
#wpa_key_mgmt=WPA-PSK
#rsn_pairwise=CCMP
最后则是更新后的, DHCP 自动分配 IP 配置文件,App/udhcpd.conf
# the start and end of the IP lease block
start 192.168.43.10
end 192.168.43.254
# the interface that udhcpd will use
interface wlan0
opt dns 114.114.114.114
option subnet 255.255.255.0
opt router 192.168.43.1
option domain local
option lease 864000 # 10days of seconds
4 注意事项
1、hostapd 需要使用新版本的,目前用的 2.9 版本的;
2、driver 最好使用 nl80211 ,即如下内容
driver=nl80211
原因:目前看到的所有成功的教程,都是使用 nl80211 ,最好保持一致。
3、为什么原来用 nl80211 不可以?
回答:
原来将 driver 配置为 nl80211 ,运行命令报错,是因为使用的工具版本不支持导致的,后来换了 2.9 版本的 hostapd 后,就正常了。
4、目前 WiFi 开启热点后,使用的信道 11 ,经过自测,此信道在当前环境下,相对比较稳定;
channel=11
好了,本期内容就是这样,下篇文章将总结一下整个移植过程,以及自己的思考。
感谢您的阅读,我是小二,我们下期再见!